import UIKit

extension UIViewController {
    
    /// 获取当前视图控制器层次结构中的顶层视图控制器
    func topMostViewController() -> UIViewController {
        // 如果是导航控制器，返回可见的视图控制器
        if let navigationController = self as? UINavigationController {
            return navigationController.visibleViewController?.topMostViewController() ?? self
        }
        
        // 如果是标签控制器，返回选中的视图控制器
        if let tabBarController = self as? UITabBarController {
            return tabBarController.selectedViewController?.topMostViewController() ?? self
        }
        
        // 如果有呈现的视图控制器，返回呈现的视图控制器
        if let presentedViewController = self.presentedViewController {
            return presentedViewController.topMostViewController()
        }
        
        // 否则返回自身
        return self
    }
} 